A distributed file system may distribute the data blocks that make up a file amongst storage devices that are controlled by different data servers. All of the data servers may be connected via a local area network. A directory server may maintain a list of files and the logical block address of each block of data corresponding to a file. The directory server may maintain the local area network address of all data servers that control storage devices which contain each block of data. In some cases, the blocks of data that make up a file may be replicated on several different data servers. In such cases, the directory server may maintain the local area network addresses of all data servers that control storage devices that contain each block of data.
A client application that wishes to retrieve a file may send a query to the directory server over the local area network to determine the local area network address of the data server(s) that contain the blocks of data that make up the file. For each block of data, the client application may open a connection to a data server over the local area network using the address retrieved from the directory server. The contents of the data block may be retrieved from the storage device controlled by the data server and then sent to the client application over the local area network.